package br.com.datatraffic.fiscal.entidades;

// Generated 10/07/2009 10:49:54 by Hibernate Tools 3.2.0.b9

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Ticket generated by hbm2java
 */
@Entity
@Table(name = "TBTICKET")
public class Ticket5 implements java.io.Serializable {

	private Long id;
	private Infracao infracao;
	private TipoCarroceria tipoCarroceria;
	private TipoMercadoria tipoMercadoria;
	private SituacaoPesagem situacaoPesagem;
	private Municipio5 municipioByDestinoMercadoria;
	private Alerta alerta;
	private Municipio5 municipioByOrigemMercadoria;
	private SituacaoTicket5 situacaoTicket;
	private Classificacao5 classificacao;
	private Double pbt;
	private Double pesoLiquido;
	private Double pbtPesagemLenta;
	private Double pesoLiquidoPesagemLenta;
	private Double pbtPesagemMovimento;
	private Double pesoLiquidoPesagemMovimento;
	private Double pesoDeclaradoNF;
	private String autoInfracao;
	private Long numeroCupom;
	private List<HistoricoTicket5> historicoTickets = new ArrayList<HistoricoTicket5>(0);
	private List<Trafego> trafegos = new ArrayList<Trafego>(0);
	private Date dataCriacaoTicket;
	private Integer autuado;
	private Double taraPadrao;
	private Double taraDeclarado;
	private Usuario5 usuario;
	private List<TicketMotivo> ticketMotivos = new ArrayList<TicketMotivo>(0);


	@Column(name = "AUTUADO")
	public Integer getAutuado() {
		return autuado;
	}

	public void setAutuado(Integer autuado) {
		this.autuado = autuado;
	}

	@Column(name = "TARA_PADRAO")
	public Double getTaraPadrao() {
		return taraPadrao;
	}

	public void setTaraPadrao(Double taraPadrao) {
		this.taraPadrao = taraPadrao;
	}

	public Ticket5() {
	}

	public Ticket5(Long id, SituacaoPesagem situacaoPesagem,
			SituacaoTicket5 situacaoTicket, Classificacao5 classificacao) {
		this.id = id;
		this.situacaoPesagem = situacaoPesagem;
		this.situacaoTicket = situacaoTicket;
		this.classificacao = classificacao;
	}

	public Ticket5(Long id, Infracao infracao, TipoCarroceria tipoCarroceria,
			TipoMercadoria tipoMercadoria, SituacaoPesagem situacaoPesagem,
			Municipio5 municipioByDestinoMercadoria, Alerta alerta,
			Municipio5 municipioByOrigemMercadoria,
			SituacaoTicket5 situacaoTicket, Classificacao5 classificacao,
			Double pbt, Double pesoLiquido, Double pbtPesagemLenta,
			Double pesoLiquidoPesagemLenta, Double pbtPesagemMovimento,
			Double pesoLiquidoPesagemMovimento, String autoInfracao,
			Long numeroCupom, List<HistoricoTicket5> historicoTickets,
			List<Trafego> trafegos, List<TicketMotivo> ticketMotivos) {
		this.id = id;
		this.infracao = infracao;
		this.tipoCarroceria = tipoCarroceria;
		this.tipoMercadoria = tipoMercadoria;
		this.situacaoPesagem = situacaoPesagem;
		this.municipioByDestinoMercadoria = municipioByDestinoMercadoria;
		this.alerta = alerta;
		this.municipioByOrigemMercadoria = municipioByOrigemMercadoria;
		this.situacaoTicket = situacaoTicket;
		this.classificacao = classificacao;
		this.pbt = pbt;
		this.pesoLiquido = pesoLiquido;
		this.pbtPesagemLenta = pbtPesagemLenta;
		this.pesoLiquidoPesagemLenta = pesoLiquidoPesagemLenta;
		this.pbtPesagemMovimento = pbtPesagemMovimento;
		this.pesoLiquidoPesagemMovimento = pesoLiquidoPesagemMovimento;
		this.autoInfracao = autoInfracao;
		this.numeroCupom = numeroCupom;
		this.historicoTickets = historicoTickets;
		this.trafegos = trafegos;
		this.ticketMotivos = ticketMotivos;
	}

	@Id
	@SequenceGenerator(name = "SQ_TBTICKET", sequenceName = "SQ_TBTICKET", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_TBTICKET")
	@Column(name = "TICKET_ID", unique = true, nullable = false, precision = 38, scale = 0)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "INFRACAO_ID")
	public Infracao getInfracao() {
		return this.infracao;
	}

	public void setInfracao(Infracao infracao) {
		this.infracao = infracao;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_CARROCERIA_ID")
	public TipoCarroceria getTipoCarroceria() {
		return this.tipoCarroceria;
	}

	public void setTipoCarroceria(TipoCarroceria tipoCarroceria) {
		this.tipoCarroceria = tipoCarroceria;
	}	

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "USUARIO_ID")
	public Usuario5 getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario5 usuario) {
		this.usuario = usuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_MERCADORIA_ID")
	public TipoMercadoria getTipoMercadoria() {
		return this.tipoMercadoria;
	}

	public void setTipoMercadoria(TipoMercadoria tipoMercadoria) {
		this.tipoMercadoria = tipoMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "SITUACAO_ATUAL_PESAGEM", nullable = false)
	public SituacaoPesagem getSituacaoPesagem() {
		return this.situacaoPesagem;
	}

	public void setSituacaoPesagem(SituacaoPesagem situacaoPesagem) {
		this.situacaoPesagem = situacaoPesagem;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "DESTINO_MERCADORIA")
	public Municipio5 getMunicipioByDestinoMercadoria() {
		return this.municipioByDestinoMercadoria;
	}

	public void setMunicipioByDestinoMercadoria(
			Municipio5 municipioByDestinoMercadoria) {
		this.municipioByDestinoMercadoria = municipioByDestinoMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ALERTA_ID")
	public Alerta getAlerta() {
		return this.alerta;
	}

	public void setAlerta(Alerta alerta) {
		this.alerta = alerta;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ORIGEM_MERCADORIA")
	public Municipio5 getMunicipioByOrigemMercadoria() {
		return this.municipioByOrigemMercadoria;
	}

	public void setMunicipioByOrigemMercadoria(
			Municipio5 municipioByOrigemMercadoria) {
		this.municipioByOrigemMercadoria = municipioByOrigemMercadoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "SITUACAO_ATUAL_TICKET", nullable = false)
	public SituacaoTicket5 getSituacaoTicket() {
		return this.situacaoTicket;
	}

	public void setSituacaoTicket(SituacaoTicket5 situacaoTicket) {
		this.situacaoTicket = situacaoTicket;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "CLASSIFICACAO_ID", nullable = false)
	public Classificacao5 getClassificacao() {
		return this.classificacao;
	}

	public void setClassificacao(Classificacao5 classificacao) {
		this.classificacao = classificacao;
	}

	@Column(name = "PBT", precision = 50, scale = 0)
	public Double getPbt() {
		return this.pbt;
	}

	public void setPbt(Double pbt) {
		this.pbt = pbt;
	}

	@Column(name = "PESO_LIQUIDO", precision = 50, scale = 0)
	public Double getPesoLiquido() {
		return this.pesoLiquido;
	}

	public void setPesoLiquido(Double pesoLiquido) {
		this.pesoLiquido = pesoLiquido;
	}

	@Column(name = "PBT_PESAGEM_LENTA", precision = 50, scale = 0)
	public Double getPbtPesagemLenta() {
		return this.pbtPesagemLenta;
	}

	public void setPbtPesagemLenta(Double pbtPesagemLenta) {
		this.pbtPesagemLenta = pbtPesagemLenta;
	}

	@Column(name = "PESO_LIQUIDO_PESAGEM_LENTA")
	public Double getPesoLiquidoPesagemLenta() {
		return this.pesoLiquidoPesagemLenta;
	}

	public void setPesoLiquidoPesagemLenta(Double pesoLiquidoPesagemLenta) {
		this.pesoLiquidoPesagemLenta = pesoLiquidoPesagemLenta;
	}

	@Column(name = "PBT_PESAGEM_MOVIMENTO", precision = 50, scale = 0)
	public Double getPbtPesagemMovimento() {
		return this.pbtPesagemMovimento;
	}

	public void setPbtPesagemMovimento(Double pbtPesagemMovimento) {
		this.pbtPesagemMovimento = pbtPesagemMovimento;
	}

	@Column(name = "PESO_LIQUIDO_PESAGEM_MOVIMENTO", precision = 50, scale = 0)
	public Double getPesoLiquidoPesagemMovimento() {
		return this.pesoLiquidoPesagemMovimento;
	}

	public void setPesoLiquidoPesagemMovimento(
			Double pesoLiquidoPesagemMovimento) {
		this.pesoLiquidoPesagemMovimento = pesoLiquidoPesagemMovimento;
	}

	@Column(name = "AUTO_INFRACAO", length = 50)
	public String getAutoInfracao() {
		return this.autoInfracao;
	}

	public void setAutoInfracao(String autoInfracao) {
		this.autoInfracao = autoInfracao;
	}

	@Column(name = "NUMERO_CUPOM", precision = 38, scale = 0)
	public Long getNumeroCupom() {
		return this.numeroCupom;
	}

	public void setNumeroCupom(Long numeroCupom) {
		this.numeroCupom = numeroCupom;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<HistoricoTicket5> getHistoricoTickets() {
		return this.historicoTickets;
	}

	public void setHistoricoTickets(List<HistoricoTicket5> historicoTickets) {
		this.historicoTickets = historicoTickets;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<Trafego> getTrafegos() {
		return this.trafegos;
	}

	public void setTrafegos(List<Trafego> trafegos) {
		this.trafegos = trafegos;
	}
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DATA_CRIACAO_TICKET")
	public Date getDataCriacaoTicket() {
		return dataCriacaoTicket;
	}

	public void setDataCriacaoTicket(Date dataCriacaoTicket) {
		this.dataCriacaoTicket = dataCriacaoTicket;
	}
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket")
	public List<TicketMotivo> getTicketMotivos() {
		return ticketMotivos;
	}
	
	
	@Column(name="PESO_DECLARADO_NF")
	public Double getPesoDeclaradoNF() {
		return pesoDeclaradoNF;
	}
	
	
	@Column(name="TARA_DECLARADO")
	public Double getTaraDeclarado() {
		return taraDeclarado;
	}

	public void setTaraDeclarado(Double taraDeclarado) {
		this.taraDeclarado = taraDeclarado;
	}

	public void setPesoDeclaradoNF(Double pesoDeclaradoNF) {
		this.pesoDeclaradoNF = pesoDeclaradoNF;
	}

	public void setTicketMotivos(List<TicketMotivo> ticketMotivos) {
		this.ticketMotivos = ticketMotivos;
	}

	// The following is extra code specified in the hbm.xml files
	private static final long serialVersionUID = 1L;
	// end of extra code specified in the hbm.xml files


	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Ticket5 other = (Ticket5) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}


	
	
}